home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er Special 2
/
64er_Magazin_Sonderheft_02_86-02_1986_Markt__Technik_de.d64
/
schach demo
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
9KB
|
274 lines
0 rem schachgrafik v1.0
1 rem fuer c-64
2 rem frithjof dau
3 rem 3017 pattensen 4
4 rem hopfenberg 5
5 rem tel.: 05066/63906
6 rem
1000 restore:gosub3100
1010 a$="bitte druecken sie eine taste!"
1020 sys50003,1:poke53280,11:poke53281,11:poke646,0:sys50030
1030 printchr$(147)"[211][195][200][193][195][200][199][210][193][198][201][203] : [196][197][205][207][160][213][206][196][160][193][206][204][197][201][212][213][206][199]."
1040 print:print"[196]ie [194]efehlserweiterung '[211][195][200][193][195][200][199][210][193][198][201][203]' "
1050 print"stellt dem [194]enutzer 12 neue [194]efehle,die
1060 [153]"alle mit '(NULL)(NULL)(NULL)' angesprungen werden,zur
1070 print"[214]erfuegung.[211]ie ist vollstaendig in
1080 [153]"(NULL)aschienensprache geschrieben und belegt";
1090 [153]"auch bei eingeschalteter chr$rafik keinen
1100 print"[194]asicspeicherplatz.[211]ie laesst sich gut "
1110 print"z.b. in [211]chachprogrammen oder zum
1120 [153]"zum atnbspielen von (NULL)artien (von (NULL)eister-"
1130 [153]"schaften oder aehnlichen) verwenden."
1140 [141]3080
1150 [153]:[153]"str$er erste peekefehl lautet : '(NULL)(NULL)(NULL) 50000'.
1160 print"[200]iermit schaltet man die [199]rafik ein."
1170 print"[211]ie wird aber weder geloescht noch"
1180 print"werden die [198]arben der [199]rafik gesetzt.[196]ie";
1190 print"[194]itmap liegt ab $e000 und der [198]arbspei-
1200 [153]"cher ab $cc00.
1210 gosub3080
1220 print:print"2.[194]efehl: [211][217][211] 50003,[198][204][193][199]"
1230 print"[205]it diesem [194]efehl wird die [199]rafik ausge-";
1240 print"schaltet.[194]ei [198][204][193][199]=0 geht der [195]omputer in";
1250 print"den [203]leinschrift-[199]rossschriftmodus,bei"
1260 print"[198][204][193][199]=1 in den [199]rossschrift-[199]rafikmodus."
1270 gosub3080
1280 print:print"3.[194]efehl : [211][217][211] 50006
1290 [153]"(NULL)it diesem peekefehl wird die chr$rafik
1300 print"geloescht.
1310 [141]3080
1320 [153]:[153]"4.peekefehl : (NULL)(NULL)(NULL) 50009,peek(NULL)(NULL)val
1330 print"[196]er [198]arbspeicher der [199]rafik wird mit "
1340 print"dem [215]ert [194]yte gefuellt.[197]s muss gelten:
1350 [153]"0<=peek(NULL)(NULL)val<=255.str$as obere (NULL)ibble des peekytes
1360 print"bestimmt die [218]eichen-,das untere die"
1370 print"[200]intergrundfarbe."
1380 print:print"[196]emonstration:"
1390 print"[218]uerst wird die [199]rafik eingeschaltet,"
1400 print"dann der [198]arbspeicher mit 11 gefuellt,"
1410 print"und dann die [194]itmap geloescht.[196]iese"
1420 print"[208]rozedur geht natuerlich sehr schnell."
1430 gosub3080
1440 sys50000
1450 sys50009,11
1460 sys50006
1470 sys50033,"5.befehl : sys 50012,flag",0,0
1480 sys50033,"mit diesem befehl wird ein leeres brett",1,0
1490 sys50033,"gemalt.bei flag=0 ist die untere linke ",2,0
1500 sys50033,"ecke in der vordergrund-,bei flag=1 in ",3,0
1510 sys50033,"der hintergrundfarbe gemalt.",4,0
1520 sys50033,"demonstation: 'sys 50006 : sys50012,0'",5,0
1530 sys50033,a$,6,0:poke198,0:wait198,1
1540 sys50006
1550 sys50012,0
1560 sys50033,"demonstation: 'sys50012,1'",0,0
1570 sys50033,a$,1,0:poke198,0:wait198,1
1580 poke198,0:wait198,1:sys50012,1
1590 sys50033,a$,0,0:sys50033," ",1,0
1600 poke198,0:wait198,1:sys50003,1
1610 print:print"6.[194]efehl : [211][217][211] 50015,[198][201][199],[198][197][204][196]
1620 [153]"str$ieser peekefehl setzt die ascigur mit der "
1630 [153]"(NULL)ummer ascright$chr$ auf das asceld mit der (NULL)ummer"
1640 [153]"ascval(NULL)str$.str$ie ascigurencodes sind:
1650 print"[198][193][210][194][197] 1 [198][193][210][194][197] 2 [194][197][196][197][213][212][213][206][199]"
1660 print" 0 oder 128 : [204]eeres [198]eld
1670 [153]" 1 oder 129 : peekauer
1680 print" 2 oder [160]130 : [208]ferd
1690 [153]" 3 oder 131 : (NULL)auefer
1700 print" 4 oder 132 : [212]urm
1710 [153]" 5 oder 133 : str$ame
1720 print" 6 oder 134 : [203]oenig
1730 [153]"atnlle weiteren lenodes sind nicht erlaubt."
1740 [153]"str$ie ascelder sind von 0-63 nummeriert."
1750 [153]"asceld 0 liegt dabei links oben,asceld 7"
1760 [153]"rechts oben,asceld 56 links unten und asceld";
1770 [153]"63 rechts unten.str$as asceld wird bei diesem";
1780 [153]"peekefehl allerdings nicht gemalt,das macht";
1790 [153]:[153]"str$er 7. peekefehl : (NULL)(NULL)(NULL) 50018,ascval(NULL)str$
1800 print"[196]ieser [194]efehl malt nur das [198]eld mit der"
1810 print"[206]ummer [198][197][204][196] neu."
1820 gosub3080
1830 print:print"[194]efehl [206]r 8 : [211][217][211] 50021,[198][197][204][196]1,[198][197][204][196]2"
1840 print"[200]iermit wird die [198]igur auf dem [198]eld
1850 [153]"ascval(NULL)str$1 nach ascval(NULL)str$2 gesetzt.peekeide ascelder"
1860 [153]"werden neu gemalt."
1870 [141]3080
1880 [153]:[153]"peekefehl (NULL)r 9 : (NULL)(NULL)(NULL) 50024
1890 print"[200]ier werden einfach alle [198]elder neu
1900 [153]"gemalt.(NULL)ach dem (NULL)aden der (NULL)chachgrafik"
1910 [153]"ist das peekrett mit der atnnfangsstellung"
1920 [153]"besetzt."
1930 [153]"(NULL)un wieder eine str$emonstration:
1940 gosub3080
1950 sys50006:sys50000:sys50012,0
1960 sys50033,"der befehl 'sys 50024'",0,0
1970 sys50033,a$,1,0
1980 poke198,0:wait198,1:sys50024
1990 sys50033,"der befehl 'sys 50021,9,17'",0,0
2000 poke198,0:wait198,1:sys50021,9,17
2010 sys50033,"die befehle 'sys 50015,1,17'",0,0
2020 sys50033,"und 'sys 50018,17' ",1,0
2030 sys50033,a$,2,0
2040 poke198,0:wait198,1:sys50015,1,17:sys50018,17
2050 sys50033,a$,0,0
2060 sys50033," ",1,0
2070 sys50033," ",2,0
2080 poke198,0:wait198,1:sys50003,1
2090 print:print"[194]efehl [206]r 10 : [211][217][211] 50027
2100 [153]"left$ier wird das ganze peekrett einmal gegen"
2110 [153]"den (NULL)hrzeigersinn,also im mathematisch"
2120 [153]"positiven (NULL)inn gedreht und neu gemalt."
2130 [153]"(NULL)ichtig:left$ierbei werden auch synchron die";
2140 [153]"(NULL)ummern der ascelder geaendert,um die "
2150 [153]"valingabe zu vereinfachen.(NULL)o befindet sich";
2160 [153]"also asceld 0 nach einmaligen str$rehen nicht";
2170 [153]"mehr links oben,sondern links unten."
2180 [153]"valntsprechendes gilt fuer alle anderen"
2190 [153]"ascelder und fuer mehrmaliges str$rehen.
2200 gosub3080
2210 print:print"[194]efehl [206]r 11 : [211][217][211] 50030
2220 [153]"(NULL)ach atnusfuehrung dieses peekefehls sind die";
2230 [153]"asceldnummern wieder so,als sei das peekrett"
2240 [153]"bisher nicht gedreht,also befindet sich"
2250 [153]"asceld 0 wieder links oben usw."
2260 [153]:[153]"(NULL)ieder eine str$emonstation."
2270 [141]3080
2280 [158]50000:[158]50006:[158]50012,0:[158]50024
2290 [158]50033,"der befehl 'sys 50021,12,20'",0,0
2300 [158]50033,a$,1,0
2310 [151]198,0:[146]198,1:[158]50021,12,20
2320 [158]50033,"nun drehe ich einmal mit 'sys50027'.",0,0
2330 [151]198,0:[146]198,1:[158]50027
2340 [158]50033,"nun der befehl 'sys 50021,20,28' ",0,0
2350 [151]198,0:[146]198,1:[158]50021,20,28
2360 [158]50033,"nun 'sys 50030' und 'sys50021,0,1'.",0,0
2370 [151]198,0:[146]198,1:[158]50030:[158]50021,0,1
2380 [158]50033,a$[170]" ",0,0
2390 [158]50033," ",1,0
2400 [151]198,0:[146]198,1:[158]50003,1
2410 [153]:[153]"(NULL)nd der letzte peekefehl,peekefehl (NULL)r 12:"
2420 [153]"(NULL)(NULL)(NULL) 50033,(NULL)val(NULL)(NULL),(NULL)valright$(NULL)val,(NULL)(NULL)atn(NULL)(NULL)val"
2430 [153]"(NULL)it diesem peekefehl wird der (NULL)ext bei der"
2440 [153]"durch (NULL)eile und (NULL)palte bestimmtenn"
2450 [153]"(NULL)osition in die peekitmap geschrieben."
2460 [153]"str$er (NULL)ext wird immer im chr$rossschriftmodus";
2470 [153]"ausgegeben,(NULL)teuerzeichen werden als"
2480 [153]"(NULL)eerzeichen interpretiert.vals muss "
2490 [153]"weiterhin gelten: 0<=(NULL)(NULL)atn(NULL)(NULL)val<=24 "
2500 [153]"und 0<=(NULL)valright$(NULL)val<=39 ."
2510 [141]3080
2520 [153]:[153]"peekei allen peekefehlen koennen saemtliche"
2530 [153]"zu uebergebende (NULL)erte in beliebigen"
2540 [153]"ascormen auftauchen,z.b. als ascormeln,"
2550 [153]"(NULL)ariablen oder aehnliches."
2560 [141]3080
2570 [153]:[153]"vals folgt nun eine eingespeicherte "
2580 [153]"(NULL)artie.(NULL)ie koennen mit asc1 den naechsten"
2590 [153]"(NULL)ug ausfuehren,mit asc3 das peekrett drehen"
2600 [153]"mit asc5 oder asc7 die ascarben aendern und"
2610 [153]"mit '(NULL)' das (NULL)piel vorzeitig beenden."
2620 [141]3080
2630 [140]:[141]3100
2640 [158]50000:[158]50006:[158]50012,0
2650 fb[178]11:[158]50009,fb:[158]50024
2660 [158]50033,"anderssen - staunton",0,0
2670 [158]50033,"turnier zu london 1851",1,0
2680 zg[178]1:[158]50033,"zug nr",2,10
2690 f1[178]11:f2[178]0
2700 [135] zug$
2710 [139] zug$[179][177]"oo "[167]2740
2720 [158]50021,63,61:[158]50021,60,62
2730 p$[178]"o-o ":[137]2780
2740 z$[178][200](zug$,2):[141]3130:p1[178]p
2750 z$[178][202](zug$,4,2):[141]3130:p2[178]p
2760 p$[178]zug$[170]" "
2770 [158]50021,p1,p2
2780 [158]50033,[196]([181](zg))[170]":"[170]p$,2,16
2790 [139][201](zug$,2)[178]"++"[167]2880
2800 zg[178]zg[170].5
2810 [151]198,0:[146]198,1:[161]z$
2820 [139]z$[178]"input"[167][137]2700
2830 [139]z$[178]"dim"[167][158]50027
2840 [139]z$[178]"read"[167]f1[178]f1[170]1[175]15:[158]50009,f1[170]16[172]f2:[151]53280,f1
2850 [139]z$[178]"let"[167]f2[178]f2[170]1[175]15:[158]50009,f1[170]16[172]f2
2860 [139]z$[178]"s"[167][137]2880
2870 [137]2810
2880 [158]50033,a$,3,0
2890 [151]198,0:[146]198,1
2900 [158]50033,"nun eine geschwindigkeitsdemonstration.",0,0
2910 [158]50033,"der bauer auf g2 wird 100mal vor- und",1,0
2920 [158]50033,"zuruckgesetzt.stoppen sie selbst!",2,0
2930 [158]50033,a$,3,0
2940 [151]198,0:[146]198,1
2950 ti$[178]"000000"
2960 [129]a[178]1[164]100:[158]50021,54,46:[158]50021,46,54:[130]
2970 p$[178]ti$
2980 [158]50033,"diese prozedur hat also gerade "[170][201](p$,2)[170]" ",0,0
2990 [158]50033,"sekunden gedauert. ",1,0
3000 [158]50033,a$[170]" ",2,0
3010 [158]50033," ",3,0
3020 [151]198,0:[146]198,1
3030 [158]50003,1:[151]53280,11
3040 [153]:[153]"str$amit ist nun die str$emonstration zu valnde.";
3050 [153]"right$ch hoffe,sie haben noch viel (NULL)ergnuegen";
3060 [153]"mit der (NULL)chachgrafik.(NULL)schuess!!"
3070 [153]:[153]:[128]
3080 [153]"peekitte druecken (NULL)ie eine (NULL)aste!"
3090 [151]198,0:[146]198,1:[142]
3100 [129]a[178]0[164]63
3110 [135] fig:[158]50015,fig,a:[130]
3120 [142]
3130 p[178][198]([200](z$,1))[171]65[170]8[172](8[171][197]([201](z$,1))):[142]
3140 [131] 132,130,131,133,134,131,130,132
3150 [131] 129,129,129,129,129,129,129,129
3160 [131] 0,0,0,0,0,0,0,0
3170 [131] 0,0,0,0,0,0,0,0
3180 [131] 0,0,0,0,0,0,0,0
3190 [131] 0,0,0,0,0,0,0,0
3200 [131] 1,1,1,1,1,1,1,1
3210 [131] 4,2,3,5,6,3,2,4
3220 [131] e2-e4,e7-e6
3230 [131] d2-d4,g7-g6
3240 [131] f1-d3,f8-g7
3250 [131] c1-e3,c7-c5
3260 [131] c2-c3,c5xd4
3270 [131] c3xd4,d8-b6
3280 [131] g1-e2,b6xb2
3290 [131] b1-c3,b2-b6
3300 [131] a1-c1,b8-a6
3310 [131] c3-b5,g7-f8
3320 [131] oo ,d7-d6
3330 [131] d4-d5,b6-a5
3340 [131] e3-d4,e6-e5
3350 [131] d4-c3,a5-d8
3360 [131] f2-f4,f7-f6
3370 [131] f4xe5,f6xe5
3380 [131] d1-a4,c8-d7
3390 [131] c3-b4,g8-h6
3400 [131] g1-h1,h6-f7
3410 [131] a4-a3,a6-c5
3420 [131] b5xd6+,f8xd6
3430 [131] b4xc5,d6xc5
3440 [131] a3xc5,d8-e7
3450 [131] c5-c7,f7-d6
3460 [131] c7-a5,h7-h5
3470 [131] c1-c7,h8-f8
3480 [131] f1-c1,a7-a6
3490 [131] e2-d4,a8-c8
3500 [131] d4-e6,c8xc7
3510 [131] c1xc7,f8-f7
3520 [131] a5-b6,f7-f6
3530 [131] h2-h3,g6-g5
3540 [131] b6-b2,d6-b5
3550 [131] d3xb5,a6xb5
3560 [131] b2xe5,h5-h4
3570 [131] c7xb7,f6-f1+
3580 [131] h1-h2,e7-f6
3590 [131] b7-b8+,e8-e7
3600 [131] d5-d6+,e7-f7
3610 [131] b8-f8+,f7-g6
3620 [131] f8xf6+,f1xf6
3630 [131] e5xg5+,g6-f7
3640 [131] g5-g7+,f7xe6
3650 [131] g7-e7++